/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package manageDataBase;

import java.io.*;
import java.sql.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.io.FileUtils;



//  --- κλάση δημιουργίας της βάσης δεδομένων --
 
 
public class InitializeDatabase {
    
    public static void clearFolderCreateDatabase(String strFolder) {
        //διέγραψε τα περιεχόμενα του folder
        try {
            // η παρακάτω εντολή χρειάζεται το library commons-io-2.1.jar
            FileUtils.deleteDirectory(new File(strFolder));
        } catch (IOException ex) {
            Logger.getLogger(InitializeDatabase.class.getName()).log(Level.SEVERE, null, ex);
        }
        // δημιούργησε την database
        try {
            CreateDatabase();
        } catch (ClassNotFoundException | SQLException ex) {
            Logger.getLogger(InitializeDatabase.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
   
   public static void CreateDatabase() throws ClassNotFoundException, SQLException
   {
        String driver = "org.apache.derby.jdbc.EmbeddedDriver";
        String url = "jdbc:derby:Restaurants;create=true";
        String usr = "jenny";
        String psw = "jenny";
        Connection con;
        Statement stmt;
            
            Class.forName(driver);                                              
            con = DriverManager.getConnection(url, usr, psw);   
                
            //Δημιουργία σύνδεσης
            stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                        ResultSet.CONCUR_UPDATABLE);

        String SQLcommand ="";
            // ανατρέχω στο αρχείο SQLcommands.sql"
            try {
            FileInputStream fstream = new FileInputStream(".\\src\\manageDataBase\\SQLcommands.sql");
            // διαβάζω και αναδημιουργώ τις SQL εντολές
            try (DataInputStream in = new DataInputStream(fstream)) {
                BufferedReader br = new BufferedReader(new InputStreamReader(in));
                String strLine;
                while ((strLine = br.readLine()) != null)   {
                    // εάν η γραμμή του αρχείου δεν είναι σχόλιο
                    if (!(strLine.startsWith("*"))){
                        // την προσθέτω στην εντολή SQL που σχηματίζω
                        SQLcommand= SQLcommand +" "+ strLine.trim();
                    }
                    // εάν η γραμμή τελειώνει με ; τότε η εντολή SQL ολοκληρώθηκε   
                    if (SQLcommand.endsWith(";")){
                        // αφαίρεσε τελευτείο χαρακτήρα ;
                        SQLcommand = SQLcommand.replace(";", " ");
                        // εκτέλεσε την εντολή SQL
                        stmt.executeUpdate(SQLcommand);
                        // αφού η εντολή εκτελέσθηκε ξεκινά δημιουργία νέας εντολής
                        SQLcommand="";
                    }
                }
            }
        } catch (IOException ex) {
            Logger.getLogger(InitializeDatabase.class.getName()).log(Level.SEVERE, null, ex);
        }
   }
}